const path = require('path'); // 导入路径处理模块
require('dotenv').config({ path: path.join(__dirname, '.env') }); // 加载环境变量配置
const express = require('express'); // 导入Express框架
const cors = require('cors'); // 导入CORS中间件，用于处理跨域请求

// 导入各路由模块
const authRoutes = require('./routes/auth'); // 认证相关路由
const petsRoutes = require('./routes/pets'); // 宠物相关路由
const adoptionRoutes = require('./routes/adoptions'); // 领养相关路由
const userRoutes = require('./routes/users'); // 用户相关路由
const categoryRoutes = require('./routes/categories'); // 分类相关路由
const adminRoutes = require('./routes/admin'); // 管理员相关路由

// 测试数据库连接
const { testConnection } = require('./config/db');
testConnection().then(connected => {
  if (!connected) {
    console.error('数据库连接失败。请检查数据库配置。');
    process.exit(1); // 如果数据库连接失败，终止程序
  }
});

// 创建Express应用实例
const app = express();
const PORT = process.env.PORT || 3000; // 设置服务器端口，优先使用环境变量中的PORT

// 中间件配置
app.use(cors()); // 启用CORS，允许跨域请求
app.use(express.json()); // 解析JSON格式的请求体
app.use(express.urlencoded({ extended: true })); // 解析URL编码的请求体

// 静态文件服务，用于提供上传的图片等静态资源
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));

// 注册API路由
app.use('/api/auth', authRoutes); // 认证路由，如登录、注册
app.use('/api/pets', petsRoutes); // 宠物路由，如宠物列表、详情
app.use('/api/adoptions', adoptionRoutes); // 领养路由，如申请领养
app.use('/api/users', userRoutes); // 用户路由，如用户资料
app.use('/api/categories', categoryRoutes); // 分类路由，如宠物类别
app.use('/api/admin', adminRoutes); // 管理员路由，如仪表盘统计数据

// 根路由，用于API健康检查
app.get('/', (req, res) => {
  res.send('宠物领养API正在运行');
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack); // 记录错误堆栈
  res.status(500).send({ message: '服务器出错!', error: err.message });
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器运行在端口 ${PORT}`);
}); 